import { Vec2 } from "cc"


/**
 * 游戏状态
 */
export enum GameState {
    WAIT, //等待开始
    PLAYING, //游戏进行中
    PAUSE, //游戏暂停
    OVER //游戏结束
}

/**
 * 游戏配置
 */
export const config = {
    // 网格行列数
    row: 18,
    col: 10,
    // 方块宽高
    blockWidth: 50,
    blockHeight: 50,
    // I形
    shape1: [
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(0, 2)], // 0度
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(2, 0)], // 90度
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(0, 2)], // 180度
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(2, 0)] // 270度
    ],
    // O形
    shape2: [
        [new Vec2(-1, -1), new Vec2(-1, 0), new Vec2(0, -1), new Vec2(0, 0)], // 0度
        [new Vec2(-1, -1), new Vec2(-1, 0), new Vec2(0, -1), new Vec2(0, 0)], // 90度
        [new Vec2(-1, -1), new Vec2(-1, 0), new Vec2(0, -1), new Vec2(0, 0)], // 180度
        [new Vec2(-1, -1), new Vec2(-1, 0), new Vec2(0, -1), new Vec2(0, 0)] // 270度
    ],
    // T形
    shape3: [
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(0, -1)], // 0度
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(1, 0)], // 90度
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(0, 1)], // 180度
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(-1, 0)] // 270度
    ],
    // L形
    shape4: [
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(1, -1)], // 0度
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(-1, -1)], // 90度
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(-1, 1)], // 180度
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(1, 1)] // 270度
    ],
    // J形
    shape5: [
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(-1, -1)], // 0度
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(1, 1)], // 90度
        [new Vec2(-1, 0), new Vec2(0, 0), new Vec2(1, 0), new Vec2(1, 1)], // 180度
        [new Vec2(0, -1), new Vec2(0, 0), new Vec2(0, 1), new Vec2(-1, 1)] // 270度
    ],
    // Z形
    shape6: [
        [new Vec2(-1, -1), new Vec2(-1, 0), new Vec2(0, 0), new Vec2(0, 1)], // 0度
        [new Vec2(-1, 0), new Vec2(0, -1), new Vec2(0, 0), new Vec2(1, -1)], // 90度
        [new Vec2(-1, -1), new Vec2(-1, 0), new Vec2(0, 0), new Vec2(0, 1)], // 180度
        [new Vec2(-1, 0), new Vec2(0, -1), new Vec2(0, 0), new Vec2(1, -1)] // 270度
    ],
    // S形
    shape7: [
        [new Vec2(-1, 0), new Vec2(-1, 1), new Vec2(0, -1), new Vec2(0, 0)], // 0度
        [new Vec2(-1, -1), new Vec2(0, -1), new Vec2(0, 0), new Vec2(1, 0)], // 90度
        [new Vec2(-1, 0), new Vec2(-1, 1), new Vec2(0, -1), new Vec2(0, 0)], // 180度
        [new Vec2(-1, -1), new Vec2(0, -1), new Vec2(0, 0), new Vec2(1, 0)] // 270度
    ]
};